/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.bc;

import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.general.be.Capitulo;
import org.cip.esymons.general.be.ColegiadoEspecialidad;
import org.cip.esymons.general.be.DireccionPersona;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.PersonaNatural;


/**
 *
 * @author ADMINISTRADOR
 */
public class ColegiadoDelegate {

    private ColegiadoFacadeLocal local;

    public ColegiadoDelegate() {

        local = lookupColegiadoFacade();
    }

    public void create(Colegiado colegiado){

        local.create(colegiado);
    }

    public void edit(Colegiado colegiado){

        local.edit(colegiado);
    }

    public void remove(Colegiado colegiado){

        local.remove(colegiado);
    }

    public Colegiado find(Object id){

        return local.find(id);
    }

    public List<Colegiado> findAll(){

        return local.findAll();
    }

    public Colegiado buscaPorCip(String cip){

        return local.colegiadoPersona(cip);
    }

    public Colegiado buscaPorDni(String dni){

        return local.colegiadoPersonaDNI(dni);
    }

     public Colegiado buscaColegiado(Long codigo){

        try{
        return local.buscaColegiado(codigo);
        }catch(Exception ex){
            System.out.println(ex);
            return null;
        }
    }

     public List<PersonaNatural> listaColegiadosOrdinariosOrdenApellidos(Boolean condicion){

        return local.listaColegiadosOrdinariosOrdenApellidos(condicion);
     }

     public List<PersonaNatural> listaColegiadosOrdinariosOrdenCIP(Boolean condicion){

        return local.listaColegiadosOrdinariosOrdenCIP(condicion);
     }

    public List<PersonaNatural> listaColegiadosOrdinariosOrdenFechaAporte(Boolean condicion){

        return local.listaColegiadosOrdinariosOrdenFechaAporte(condicion);
     }

     public List<PersonaNatural> listaColegiadosOrdinariosOrdenFechaIncorp(Boolean condicion){

        return local.listaColegiadosOrdinariosOrdenFechaIncorp(condicion);
     }

     public List<PersonaNatural> listaOrdinariosConDireccion(List<PersonaNatural> listaPersonas2){

         return local.listaOrdinariosConDireccion(listaPersonas2);
     }

     public List<Colegiado> listaColegiadosTemporalesDireccionFono(){

         return local.listaTemporalesDireccionFono();
     }

     public List<Colegiado> listaColegiadosTemporalesOrdenCIP(){

        return local.listaColegiadosTemporalesOrdenCIP();
     }

     public List<Colegiado> listaColegiadosTemporalesOrdenApellidos(){

        return local.listaColegiadosTemporalesOrdenApellidos();
     }

     public List<Colegiado> listaColegiadosTemporalesOrdenFechaIncorp(){

        return local.listaColegiadosTemporalesOrdenFechaIncorp();
     }

     public List<Colegiado> listaColegiadosTemporalesOrdenCarnetExt(){

        return local.listaColegiadosTemporalesOrdenCarnetExt();
     }

     public List<Colegiado> listaColegiadosExternosDireccionFono(){

         return local.listaExternosDireccionFono();
     }

     public List<Colegiado> listaColegiadosExternosOrdenCIP(){

        return local.listaColegiadosExternosOrdenCIP();
     }

     public List<Colegiado> listaColegiadosExternosOrdenApellidos(){

        return local.listaColegiadosExternosOrdenApellidos();
     }

     public List<Colegiado> listaColegiadosExternosOrdenDNI(){

        return local.listaColegiadosExternosOrdenDNI();
     }

     public List<Colegiado> listaTranferidosOrdenCIP(){

        return local.listaTranferidosOrdenCIP();
     }

     public List<Colegiado> listaTranferidosOrdenApellidos(){

        return local.listaTranferidosOrdenApellidos();
     }

     public List<Colegiado> listaTranferidosOrdenFechaIncrip(){

        return local.listaTranferidosOrdenFechaIncrip();
     }

     public List<Colegiado> listaFallecidosOrdenCIP(){

        return local.listaFallecidosOrdenCIP();
     }

     public List<Colegiado> listaFallecidosOrdenApellidos(){

        return local.listaFallecidosOrdenApellidos();
     }

     public List<Colegiado> listaFallecidosOrdenFechaFallecio(){

        return local.listaFallecidosOrdenFechaFallecio();
     }

     public List<Colegiado> listaFallecidosOrdenFechaIncorp(){

        return local.listaFallecidosOrdenFechaIncorp();
     }

     public List<Colegiado> listaVitaliciosDireccionFono(){

        return local.listaVitaliciosDireccionFono();
     }

     public List<Colegiado> listaVitaliciosOrdenCip(){

        return local.listaVitaliciosOrdenCIP();
     }

     public List<Colegiado> listaVitaliciosOrdenApellidos(){

        return local.listaVitaliciosOrdenApellidos();
     }

     public List<Colegiado> listaVitaliciosOrdenFechaIncorporacion(){

        return local.listaVitaliciosOrdenFechaIncorporacion();
     }

     public List<DireccionPersona> listaPorFechas(Date fecha1, Date fecha2){

        return local.listaPorFechas(fecha1, fecha2);
     }

     public List<Colegiado> listaPorFechaIncorp(Date fecha1, Date fecha2){

        return local.listaPorFechaIncorp(fecha1, fecha2);
     }
     
     public List<Colegiado> listaColegiadosPorUniversidadOrdenCip(Integer codigo){

         return local.listarColegiadosXUniversidadOrdenCip(codigo);
     }

     public List<Colegiado> listaColegiadosPorUniversidadOrdenApellidos(Integer codigo){

         return local.listarColegiadosXUniversidadOrdenApellidos(codigo);
     }

     public List<Colegiado> listaColegiadosPorUniversidadOrdenTipoCol(Integer codigo){

         return local.listarColegiadosXUniversidadOrdenTipoCol(codigo);
     }

     public List<Colegiado> listaColSinCIP(Date fecha1, Date fecha2){

         return local.listarColegiadosSinCip(fecha1, fecha2); 
     }

     public List<DireccionPersona> listadoGeneralColegiados(){

        return local.listarColegiadoDireccion();
     }

     //lista personas con o sin direccion
     public List<PersonaNatural> listaPersonasGeneral(){

         return local.listaPersonasGeneral();
     }

     public Colegiado buscaColegiadoPorPasaporte(String pasaporte){

         return local.colegiadoPersonaPasaporte(pasaporte);
     }

//     public List<DireccionPersona> listaColegiadosFechaIncorpDireccionFono(Date fecha1, Date fecha2){
//
//         return local.listaPorFechaIncorpDireccionFono(fecha1, fecha2);
//     }

     public List<PersonaNatural> listaColegiadosFechaIncorpDireccionFono(Date fecha1, Date fecha2){

         return local.listaPorFechaIncorpDireccionFono(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaIncorpOrdenCIP(Date fecha1, Date fecha2){

         return local.listaPorFechaIncorpOrdenCIP(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaIncorpOrdenApellidos(Date fecha1, Date fecha2){

         return local.listaPorFechaIncorpOrdenApellidos(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaIncorpOrdenTipoCol(Date fecha1, Date fecha2){

         return local.listaPorFechaIncorpOrdenTipoCol(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaIncorpOrdenFecha(Date fecha1, Date fecha2){

         return local.listaPorFechaIncorpOrdenFecha(fecha1, fecha2);
     }

    public List<Colegiado> listaColegiadoPorFechaIncorpTodosLosCapitulos(Date fecha1, Date fecha2){

        return local.listaColegiadoPorIncorpTodosLosCapitulos(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadoPorFechaIncorpyCapitulo(Integer codigo,Date fecha1, Date fecha2){

        return local.listaColegiadoPorIncorpyCapitulo(codigo, fecha1, fecha2);
    }

     public List<PersonaNatural> listaColegiadosFechaAporteDireccionFono(Date fecha1, Date fecha2){

         return local.listaPorFechaAporteDireccionFono(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaAporteOrdenCIP(Date fecha1, Date fecha2){

         return local.listaPorFechaAporteOrdenCIP(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaAporteOrdenApellidos(Date fecha1, Date fecha2){

         return local.listaPorFechaAporteOrdenApellidos(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaAporteOrdenTipoCol(Date fecha1, Date fecha2){

         return local.listaPorFechaAporteOrdenTipoCol(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaAporteOrdenFecha(Date fecha1, Date fecha2){

         return local.listaPorFechaAporteOrdenFecha(fecha1, fecha2);
     }

    public List<Colegiado> listaColegiadoPorFechaAporteTodosLosCapitulos(Date fecha1, Date fecha2){

        return local.listaColegiadoPorAporteTodosLosCapitulos(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadoPorFechaAporteyCapitulo(Integer codigo,Date fecha1, Date fecha2){

        return local.listaColegiadoPorAporteyCapitulo(codigo, fecha1, fecha2);
    }

     public List<Colegiado> listaColegiadosFechaNacimientoDireccionFono(Date fecha1, Date fecha2){

         return local.listaPorFechaNacimientoDireccionFono(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaNacimientoOrdenCIP(Date fecha1, Date fecha2){

         return local.listaPorFechaNacimientoOrdenCIP(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaNacimientoOrdenApellidos(Date fecha1, Date fecha2){

         return local.listaPorFechaNacimientoOrdenApellidos(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaNacimientoOrdenTipoCol(Date fecha1, Date fecha2){

         return local.listaPorFechaNacimientoOrdenTipoCol(fecha1, fecha2);
     }

     public List<Colegiado> listaColegiadosFechaNacimientoOrdenFecha(Date fecha1, Date fecha2){

         return local.listaPorFechaNacimientoOrdenFecha(fecha1, fecha2);
     }

    public List<Colegiado> listaColegiadoPorFechaNacimientoTodosLosCapitulos(Date fecha1, Date fecha2){

        return local.listaColegiadoPorFechaNacimientoTodosLosCapitulos(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadoPorFechaNacimientoyCapitulo(Integer codigo,Date fecha1, Date fecha2){

        return local.listaColegiadoPorFechaNacimientoyCapitulo(codigo, fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaAporteDireccionFono(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosFechaAporteDireccionFono(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaAporteOrdenCIP(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaAporteOrdenCIP(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaAporteOrdenApellidos(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaAporteOrdenApellidos(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaAporteOrdenFechaAporte(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaAporteOrdenFechaAporte(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaAporteOrdenIncorp(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaAporteOrdenFechaIncorp(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaIncorpDireccionFono(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosFechaIncorpDireccionFono(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaIncorpOrdenCIP(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaIncorpOrdenCIP(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaIncorpOrdenApellidos(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaIncorpOrdenApellidos(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaIncorpOrdenFechaAporte(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaIncorpOrdenFechaAporte(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadosNuevosPorFechaIncorpOrdenIncorp(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosPorFechaIncorpOrdenFechaIncorp(fecha1, fecha2);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosPorCapituloOrdenCIP(Date fecha1, Date fecha2, Capitulo capitulo){
        
        return local.listaColegiadosNuevosPorCapituloOrdenCIP(fecha1, fecha2, capitulo);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosPorCapituloOrdenApellidos(Date fecha1, Date fecha2, Capitulo capitulo){

        return local.listaColegiadosNuevosPorCapituloOrdenApellidos(fecha1, fecha2, capitulo);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosPorCapituloOrdenFechaAporte(Date fecha1, Date fecha2, Capitulo capitulo){

        return local.listaColegiadosNuevosPorCapituloOrdenFechaAporte(fecha1, fecha2, capitulo);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosPorCapituloOrdenFechaIncorp(Date fecha1, Date fecha2, Capitulo capitulo){

        return local.listaColegiadosNuevosPorCapituloOrdenFechaIncorp(fecha1, fecha2, capitulo);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosTodosCapituloOrdenCIP(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosTodosCapituloOrdenCIP(fecha1, fecha2);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosTodosCapituloOrdenApellidos(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosTodosCapituloOrdenApellidos(fecha1, fecha2);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosTodosCapituloOrdenFechaAporte(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosTodosCapituloOrdenFechaAporte(fecha1, fecha2);
    }

    public List<ColegiadoEspecialidad> listaColegiadosNuevosTodosCapituloOrdenFechaIncorp(Date fecha1, Date fecha2){

        return local.listaColegiadosNuevosTodosCapituloOrdenFechaIncorp(fecha1, fecha2);
    }

    //buscar en el consejo nacional por web services
    public busqColXCip.Colegiado buscarColegiadoWS(int cip){

        return local.wsBuscarColegiadoxCIP(cip);
    }

    public busqColXCip.Colegiado buscarColegiadoWSPorApellidos(String apepat, String apemat,String nombres){

        return local.wsBuscarxNombreyApellidos(apemat, apemat, nombres);
    }

    //LISTA DE COLEGIADO POR FECHA DE HABILIDAD

    public List<Colegiado> listaPorFechaHabilidadOrdenCIP(Date fecha1, Date fecha2){

        return local.listaPorFechaHabilidadOrdenCIP(fecha1, fecha2);
    }

    public List<Colegiado> listaPorFechaHabilidadOrdenApellido(Date fecha1, Date fecha2){

        return local.listaPorFechaHabilidadOrdenApellidos(fecha1, fecha2);
    }

    public List<Colegiado> listaPorFechaHabilidadOrdenTipo(Date fecha1, Date fecha2){

        return local.listaPorFechaHabilidadOrdenTipoCol(fecha1, fecha2);
    }

    public List<Colegiado> listaPorFechaHabilidadOrdenFecha(Date fecha1, Date fecha2){

        return local.listaPorFechaHabilidadOrdenFecha(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadoPorHabilidadTodosLosCapitulos(Date fecha1, Date fecha2){

        return local.listaColegiadoPorHabilidadTodosLosCapitulos(fecha1, fecha2);
    }

    public List<Colegiado> listaColegiadoPorHabilidadyCapitulo(Integer codigo,Date fecha1, Date fecha2){

        return local.listaColegiadoPorHabilidadyCapitulo(codigo, fecha1, fecha2);
    }

    public List<Colegiado> listaPorFechaHabilidadyCapituloDireccionFono(Integer codigo, Date fecha1, Date fecha2){

        return local.listaPorFechaHabilidadyCapituloDireccionFono(codigo, fecha1, fecha2);
    }

    public List<PersonaNatural> listaPorFechaHabilidadTodosCapitulosDireccionFono(Date fecha1, Date fecha2){

        return local.listaPorFechaHabilidadTodosCapitulosDireccionFono(fecha1, fecha2);
    }

    //colegiados que cumplen años en el mes actual

    public List<PersonaNatural> listaColegiadoCumpleagneroDireccionOrdenCIP(Boolean condicion, int mes){
        return local.listaColegiadoCumpleagneroDireccionOrdenCIP(condicion, mes);
    }

    public List<PersonaNatural> listaColegiadoCumpleagneroOrdenCIP(Boolean condicion, int mes){

        return local.listaColegiadoCumpleagneroOrdenCIP(condicion, mes);
    }

    public List<PersonaNatural> listaColegiadoDeCumpleagnosOrdenApellido(Boolean condicion, int mes){

        return local.listaColegiadoDeCumpleagnosOrdenApellido(condicion, mes);
    }

    public List<PersonaNatural> listaColegiadoDeCumpleagnosOrdenNacimiento(Boolean condicion, int mes){

        return local.listaColegiadoDeCumpleagnosOrdenNacimiento(condicion, mes);
    }

    
    public List<DireccionPersona> listaColegiadosPorDistrito(List<Distrito> listaDistritos,Boolean condicion){

        return local.listaColegiadosPorDistrito(listaDistritos, condicion);
    }

   public List<DireccionPersona> listaColegiadosPorDistritoOrdenApellido(List<Distrito> listaDistritos,Boolean condicion){

       return local.listaColegiadosPorDistritoOrdenApellido(listaDistritos, condicion);
   }

   public List<DireccionPersona> listaColegiadosPorDistritoOrdenNacimiento(List<Distrito> listaDistritos,Boolean condicion){

       return local.listaColegiadosPorDistritoOrdenNacimiento(listaDistritos, condicion);
   }

   //COLEGIADOS CON CORREO POR FECHA DE INCORPORACION
   public List<Colegiado> listaColegiadosFechaIncorpConCorreo(Date fecha1, Date fecha2){

         return local.listaPorFechaIncorpOrdenApellidosConCorreo(fecha1, fecha2);
     }
    
    private ColegiadoFacadeLocal lookupColegiadoFacade() {
        try {
            Context c = new InitialContext();
            return (ColegiadoFacadeLocal) c.lookup("java:comp/env/ColegiadoFacade");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }

    


    

}
